<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<![endif]-->
<title>VIM 中文用户手册: 使用语法高亮</title>
<link rel="stylesheet" href="vim-stylesheet.css" type="text/css" />
<link rel="canonical" href="https://yianwillis.github.io/vimcdoc/doc/usr_06.html" />
<script type="text/javascript" src="vimcdoc.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<nav id=banner>
<form action=tags.html target="tag_iframe">
  <input type="text" name="tag" id="tag" placeholder="标签搜索">
</form>
<iframe name="tag_iframe" src=""></iframe>
<a href="help.html">帮助总览</a> &middot;
<hr/>
<a href="quickref.html">快速参考</a> &middot;
<a href="index.html">命令索引</a> &middot;
<a href="eval.html#functions">函数列表</a> &middot;
<a href="quickref.html#option-list">选项列表</a> &middot;
<hr/>
<a href="usr_toc.html">用户手册</a> &middot;
<a href="help.html#reference_toc">参考手册</a> &middot;
</nav>

<header>
<h2>usr_06</h2>
</header>
<article id=outer>
<section class=inner>
<b class="vimtag"> <a name="usr_06.txt">usr_06.txt</a> </b>    适用于 Vim 9.0 版本。   最近更新: 2022年8月

                     <code class="vim">VIM 用户手册 - by Bram Moolenaar</code>
                                <code class="vim">译者</code>: Nek_in

                          使用语法高亮


黑白的文字让人厌倦了，增加一些色彩能为你的文件带来生气。这不但看起来漂亮，
还能够提高你的工作效率。本章介绍如何使用不同颜色显示不同文本并把它打印出来。

 <a href="usr_06.html#06.1">06.1</a>   功能激活
 <a href="usr_06.html#06.2">06.2</a>   颜色显示不出来或者显示出错误的颜色怎么办？
 <a href="usr_06.html#06.3">06.3</a>   使用不同的颜色
 <a href="usr_06.html#06.4">06.4</a>   是否使用色彩
 <a href="usr_06.html#06.5">06.5</a>   带颜色打印
 <a href="usr_06.html#06.6">06.6</a>   深入阅读

        下一章:  <a href="usr_07.html#usr_07.txt">usr_07.txt</a>   编辑多个文件
        前一章:  <a href="usr_05.html#usr_05.txt">usr_05.txt</a>   选项设置
          目录:  <a href="usr_toc.html#usr_toc.txt">usr_toc.txt</a> 

</section><hr class="doubleline" /><section class=inner>
<h4><b class="vimtag"> <a name="06.1">06.1</a> </b>  功能激活</h4>
一切从一个简单的命令开始: 
<code class="example"></code>
<code class="example">        :syntax enable</code>
<code class="example"></code>
大多数情况下，这会让你的文件带上颜色。Vim 会自动检测文件的类型，并调用合适的语
法高亮。一下子注释变成蓝色，关键字变成褐色，而字符串变成红色了。这使你可以很容
易浏览整个文档。很快你就会发现，黑白的文本真的会降低你的效率！

如果你希望总能看到语法高亮，把 ":syntax enable" 命令加入到  <a href="starting.html#vimrc">vimrc</a>  文件中。

如果你想语法高亮只在支持色彩的终端中生效，你可以在  <a href="starting.html#vimrc">vimrc</a>  文件中这样写: 
<code class="example"></code>
<code class="example">        if &amp;t_Co &gt; 1</code>
<code class="example">          syntax enable</code>
<code class="example">        endif</code>
<code class="example"></code>
如果你只想在 GUI 版本中有效，可以把 ":syntax enable" 放入你的  <a href="gui.html#gvimrc">gvimrc</a>  文件。

</section><hr class="doubleline" /><section class=inner>
<h4><b class="vimtag"> <a name="06.2">06.2</a> </b>  颜色显示不出来或者显示出错误的颜色怎么办？</h4>
有很多因素会让你看不到颜色:

- 你的终端不支持彩色。
        这种情况下，Vim 会用粗体，斜体和下划线区分不同文字，但这不好看。你可能
        会希望找一个支持彩色的终端。对于 Unix，我推荐 XFree86 项目的 xterm:
         <a href="syntax.html#xfree-xterm">xfree-xterm</a> 。

- 你的终端其实支持颜色，可是 Vim 不知道。
        确保你的 $TERM 设置正确。例如，当你使用一个支持彩色的 xterm 终端: 
<code class="example"></code>
<code class="example">                setenv TERM xterm-color</code>

        或者 (基于你用的控制台终端) 
<code class="example"></code>
<code class="example">                TERM=xterm-color; export TERM</code>

        终端名必须与你使用的终端一致。如果这还是不行，参考一下  <a href="syntax.html#xterm-color">xterm-color</a> ，
        那里介绍了一些使 Vim 显示彩色的方法 (不仅是 xterm)。

- 文件类型无法识别。
        Vim 不可能识别所有文件，而且有时很难说一个文件是什么类型的。试一下这个
        命令: 
<code class="example"></code>
<code class="example">                :set filetype</code>

        如果结果是 "filetype="，那么问题就是出在文件类型上了。你可以手工指定文
        件类型: 
<code class="example"></code>
<code class="example">                :set filetype=fortran</code>

        要知道哪些类型是有效的，查看一下 $VIMRUNTIME/syntax 目录。对于 GUI 版
        本，你还可以使用 Syntax 菜单。设置文件类型也可以通过  <a href="options.html#modeline">modeline</a> ，这种
        方式使得该文件每次被编辑时都被高亮。例如，下面这行可用于 Makefile (把
        它放在接近文件首和文件末的地方) 
<code class="example"></code>
<code class="example">                # vim: syntax=make</code>

        你可能知道怎么检测自己的文件类型，通常的方法是检查文件的扩展名 (就是点
        后面的内容)。 <a href="filetype.html#new-filetype">new-filetype</a>  说明如何告知 Vim 进行那种文件类型的检查。

- 你的文件类型没有语法高亮定义。
        你可以找一个相似的文件类型并人工设置为那种类型。如果觉得不好，你可以自
        己写一个，参见  <a href="syntax.html#mysyntaxfile">mysyntaxfile</a> 。


或者颜色是错的:

- 彩色的文字难以辨认。
        Vim 自动猜测你使用的背景色。如果是黑的 (或者其它深色的色彩)，它会用浅
        色作为前景色。如果是白的 (或者其它浅色)，它会使用深色作为前景色。如果
        Vim 猜错了，文字就很难认了。要解决这个问题，设置一下 <a href="options.html#'background'">'background'</a> 选
        项。对于深色: 
<code class="example"></code>
<code class="example">                :set background=dark</code>

        而对于浅色: 
<code class="example"></code>
<code class="example">                :set background=light</code>

       这两个命令必须在 ":syntax enable" 命令前调用，否则不起作用。如果要在这
       之后设置背景，可以再调用一下 ":syntax reset" 使得 Vim 重新进行缺省颜色
       的设置。

- 在自下往上滚屏的过程中颜色显示不对。
        Vim 在分析文本的时候不对整个文件进行处理，它只分析你要显示的部分。这
        样能省不少时间，但也会因此带来错误。一个简单的修正方法是敲 <code class="keystroke">CTRL-L</code>。
        或者往回滚动一下再回来。要彻底解决这个问题，请参见  <a href="syntax.html#:syn-sync">:syn-sync</a> 。有些
        语法定义文件有办法自己找到前面的内容，这可以参见相应的语法定义文件。
        例如， <a href="syntax.html#tex.vim">tex.vim</a>  中可以查到 Tex 语法定义。

</section><hr class="doubleline" /><section class=inner>
<h4><b class="vimtag"> <a name="06.3">06.3</a> </b>  使用不同颜色                           <b class="vimtag"> <a name=":syn-default-override">:syn-default-override</a> </b></h4>
如果你不喜欢默认的色彩方案，你可以选另一个色彩方案。在 GUI 版本中可以使用
Edit/Color 菜单。你也可以使用这个命令: 
<code class="example"></code>
<code class="example">        :colorscheme evening</code>
<code class="example"></code>
"evening" 是色彩方案的名称。还有几种备选方案可以试一下。在 $VIMRUNTIME/colors
中可以找到这些方案。

等你确定了一种喜欢的色彩方案，可以把 ":colorscheme" 命令加到你的  <a href="starting.html#vimrc">vimrc</a>  文件
中。

你可以自己编写色彩方案，方法如下:

1. 选择一种接近你理想的色彩方案。把这个文件拷贝到你自己的 Vim 目录中。在
Unix 上，可以这样: 
<code class="example"></code>
<code class="example">        !mkdir ~/.vim/colors</code>
<code class="example">       !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim</code>

   在 Vim 中完成的好处是可以利用 $VIMRUNTIME 变量。

2. 编辑这个色彩方案，常用的有下面的这些条目:

        term            黑白终端的属性
        cterm           彩色终端的属性
        ctermfg         彩色终端的前景色
        ctermbg         彩色终端的背景色
        gui             GUI 版本属性
        guifg           GUI 版本的前景色
        guibg           GUI 版本的背景色

   例如，要用绿色显示注释: 
<code class="example"></code>
<code class="example">        :highlight Comment ctermfg=green guifg=green</code>

   属性是 "bold" (粗体) 和 "underline" (下划线) 可以用于 "cterm" 和 "gui"。如
   果你两个都想用，可以用 "bold,underline"。详细信息请参考  <a href="syntax.html#:highlight">:highlight</a>  命令。

3. 告诉 Vim 总使用你这个色彩方案。把如下语句加入你的  <a href="starting.html#vimrc">vimrc</a>  中: 
<code class="example"></code>
<code class="example">        colorscheme mine</code>
<code class="example"></code>
如果你要测试一下常用的色彩组合，用如下命令:   
<code class="example"></code>
<code class="example">        :runtime syntax/colortest.vim</code>
<code class="example"></code>
这样你会看到不同的颜色组合。你可以很容易的看到哪一种可读性好而且漂亮。不过这些
不是仅有的可用颜色。可以指定 #rrggbb 十六进制颜色，也可以为十六进制颜色在
 <a href="eval.html#v:colornames">v:colornames</a>  里定义新颜色名，如: 
<code class="example"></code>
<code class="example">        let v:colornames['mine_red'] = '#aa0000'</code>
<code class="example"></code>
如果你想编写别人都能用的色彩方案，<code class="note">注意</code> 仅当颜色尚不存在时添加定义: 
<code class="example"></code>
<code class="example">        call extend(v:colornames, {'mine_red': '#aa0000'}, 'keep')</code>
<code class="example"></code>
这使色彩方案的用户可在载入你的色彩方案之前，覆盖该颜色的准确定义，例如，在
 <a href="starting.html#.vimrc">.vimrc</a>  文件里: 
<code class="example"></code>
<code class="example">        runtime colors/lists/css_colors.vim</code>
<code class="example">        let v:colornames['your_red'] = v:colornames['css_red']</code>
<code class="example">        colorscheme yourscheme</code>
<code class="example"></code>
作为色彩方案作者，应该可以依赖用于 GUI 颜色的颜色名。它们定义在
 <code class="badlink">colors/lists/default.vim</code> 。每次运行 colorscheme 命令时都载入所有这些在
 <a href="options.html#'runtimepath'">'runtimepath'</a>  上找到的文件。vim 发布提供的官方列表应该已包含所有的 X11 颜色
(之前在 rgb.txt 中定义)。

</section><hr class="doubleline" /><section class=inner>
<h4><b class="vimtag"> <a name="06.4">06.4</a> </b>  是否使用色彩</h4>
使用色彩显示文本会影响效率。如果你觉得显示得很慢，可以临时关掉这个功能: 
<code class="example"></code>
<code class="example">        :syntax clear</code>
<code class="example"></code>
当你开始编辑另一个文件 (或者同一个文件)，色彩会重新生效。

如果你要完全关闭这个功能: 
<code class="example"></code>
<code class="example">        :syntax off</code>
<code class="example"></code>
这个命令会停止对所有缓冲区的所有语法高亮。详见  <a href="syntax.html#:syntax-off">:syntax-off</a> 。

                                                        <b class="vimtag"> <a name=":syn-manual">:syn-manual</a> </b>
如果你想只对特定的文件采用语法高亮，可以使用这个命令: 
<code class="example"></code>
<code class="example">        :syntax manual</code>
<code class="example"></code>
这个命令激活语法高亮功能，但不会在你开始编辑一个缓冲区时自动生效 (<code class="vim">译者注</code>: Vim
中，每个被打开的文件对应一个缓冲区，后面的章节中你会接触到这方面的内容)。要在
当前缓冲区中使用高亮，需要设置 <a href="options.html#'syntax'">'syntax'</a> 选项: 
<code class="example"></code>
<code class="example">        :set syntax=ON</code>

</section><hr class="doubleline" /><section class=inner>
<h4><b class="vimtag"> <a name="06.5">06.5</a> </b>  带颜色打印                                       <b class="vimtag"> <a name="syntax-printing">syntax-printing</a> </b></h4>
在 MS-Windows 版本上，你可以用如下命令打印当前文件: 
<code class="example"></code>
<code class="example">        :hardcopy</code>
<code class="example"></code>
这个命令会启动一个常见的打印对话框，你可以通过它选择打印机并作一些必要的设置。
如果你使用的是彩色打印机，那么打印出来的色彩将与你在 Vim 中看到的一样。但如果
你使用的是深色的背景，它的颜色会被适当调整，以便在白色地打印纸上看起来比较舒
服。

下面几个选项可以改变 Vim 的打印行为:
        <a href="options.html#'printdevice'">'printdevice'</a>
        <a href="options.html#'printheader'">'printheader'</a>
        <a href="options.html#'printfont'">'printfont'</a>
        <a href="options.html#'printoptions'">'printoptions'</a>

要仅打印一定范围内的行，可以用可视模式选择需要打印的行再执行打印命令，例如: 
<code class="example"></code>
<code class="example">        v100j:hardcopy</code>
<code class="example"></code>
"v" 启动可视模式，"100j" 向下选中 100 行，然后执行 ":hardcopy" 打印这些行。当
然，你可以用其它命令选中这 100 行。

如果你有一台 PostScript 打印机，上面的方法也适合 Unix 系统。否则，你必须做一些
额外的处理: 你需要先把文件转换成 HTML 类型，然后用浏览器打印。

如下命令把当前文件转换成 HTML 格式: 
<code class="example"></code>
<code class="example">        :TOhtml</code>
<code class="example"></code>
如果不行: 
<code class="example"></code>
<code class="example">        :source $VIMRUNTIME/syntax/2html.vim</code>
<code class="example"></code>
你发现它会嘎吱嘎吱执行一阵子，(如果文件很大，这可能要花点时间)。之后，Vim 会打
开一个新的窗口并显示 HTML 代码。现在把这个文件存下来 (存在哪都不要紧，反正最后
你要删掉它的): 
<code class="example"></code>
<code class="example">        :write main.c.html</code>
<code class="example"></code>
用你喜欢的浏览器打开这个文件，并通过它打印这个文件。如果一切顺利，这个输出应该
与 Vim 中显示的一样。要了解更详细的信息，请参见  <a href="syntax.html#2html.vim">2html.vim</a> 。处理完后别忘了删
掉那个 HTML 文件。

除了打印，你还可以把这个 HTML 文件，放到 WEB 服务器上，让其他人可以通过彩色文
本阅读。

</section><hr class="doubleline" /><section class=inner>
<h4><b class="vimtag"> <a name="06.6">06.6</a> </b>  深入阅读</h4>
 <a href="usr_44.html#usr_44.txt">usr_44.txt</a>     自定义语法高亮
 <a href="syntax.html#syntax">syntax</a>         关于本话题的全部细节

</section><hr class="doubleline" /><section class=inner>
<h4></h4>下一章:  <a href="usr_07.html#usr_07.txt">usr_07.txt</a>   编辑多个文件

版权: 参见  <a href="usr_01.html#manual-copyright">manual-copyright</a>   vim:tw=78:ts=8:noet:ft=help:norl:
</section>
</article>
<footer>
Generated by vim2html
</footer>
</body>
</html>
